home *** CD-ROM | disk | FTP | other *** search
- Welcome to Feel.
-
- ftp.bath.ac.uk: /pub/eulisp/feel-0.89.tar.Z
-
- Welcome to FEEL.
-
- Compiling:
- You ought to be able to type 'make install' in the source
- directory, and get a working system (after changing some variables,
- and selecting a configuration and doing make depend). The important
- ones are FEEL_PATH, and the set involving your host. Read the Makefile
- and the manual for the options that may need changing for your system.
- You may need to do a 'make depend' to get the dependencies right
- (Assuming you have X11), although this is not absolutely necessary.
-
- To run Feel, use the script 'feel' in the bin directory. You will need
- to edit FEEL_PATH here as well. If the system falls over while loading
- the bytecodes (this is generally because you have compiled the system
- without either sockets or full thread support), do 'feel -noimage'
- instead. You may be able to build a bytecode interpreted system using
- the compiler in this case.
-
- The bytecode interpreter:
- This exists, but is very experimental. The compiled image is supplied,
- but your milage may vary. It will only work on BSD versions with
- sockets selected. Any other needs to go through the bootstrap process.
-
- Bootstrapping the system.
- If you want to change the low-level method-dispatch system you should
- edit gen-init.em in the Boot subdirectory, then run GNUmake (standard
- make may not work) to get a new initialisation module. Note you
- shouldn't need to change anything if you merely want eql-type methods.
- See eql.em in the Modules directory for the appropriate code.
-
- Extremely brief intro to EuLisp:
- --------------------------------
- Eulisp is a lisp dialect with the following features:
-
- Reflective Object system
- Telos replaces Common Lisp's defclass and defstruct with similarly
- named constructions, which differ in syntax. Check the definition for
- details (or defs.em for the real truth).
-
- Module system
- EuLisp code is generally written as a set of modules, with an explicit
- interface. Two Modules cannot import each other --- the importation
- graph has to be a DAG. In practice, this can be circumvented by
- (ab)using generics.
-
- Dynamic binding is different, as are the defining forms for (module)
- global variables --- it is (deflocal foo <optional-value>).
- There is also defconstant for defining immutable globals.
-
- Read the definition for more details.
-
- Brief intro to using feel:
- --------------------------
-
- Feel attempts to conform to the eulisp specification, but misses in
- several respects. These bugs (both in Feel and the definition) are
- being fixed.
-
- Feel takes 2 important options:
- -heap <n> runs feel with n meg of heap space --- general allocation area
- -stack-space <n> runs feel with n meg of stack space --- 'C' and static
- allocation area. If feel stops with 'stack space wimped out' increase
- this parameter. The maximum value for both of these is 50Meg.
-
- Feel is oganised into modules. Each module is a separate namespace,
- and by default imports and exports no bindings. Initially you are in
- the user module, which imports eulisp0, and a describe interface. An
- important system module is the root module--- this is where,
- conceptually at least modules are defined. Interpreted modules are
- expected to have a '.em' suffix.
-
- In any module,
- (!> module-name) will enter a module, loading it if necessary. It
- first looks for the file in the current directory, then down the
- environment variable FEEL_LOAD_PATH. All bindings in that module then
- become available. To interacively import one module into another, use
- (import <mod-name>)
-
- (!>> module-name) is the same as !>, except that it always loads the
- module from disk.
-
- (loaded-modules) gives the list of currently loaded modules (including
- the internal ones, which are in turn re-exported by standard0).
-
- (load-module module-name) will load the module and print the
- resulting module. This is the easiest way of finding out what a module
- exports. (Currently broken in feel 0.89)
-
- (load-path) gives the current value of the load path (see above).
- (set-load-path x) sets the load path.
-
- The !> and !>> forms can be used anywhere, while the others can only
- be invoked from the root module. !root will always return to the root
- module.
-
- Error handler:
- !exit exits the error handler
- !b gives a backtrace
- !q gives a quick backtrace
- (!cont <value>) will continue the last continuable error with the value
- supplied.
- (!B) May give a better backtrace, but is more unreliable.
-
- pab@maths.bath.ac.uk
-